package model

import "github.com/gogf/gf/v2/os/gtime"

type VmInput struct {
	Id int
}

type VmCreateInput struct {
	Name           string
	OsType         string
	Owner          string
	Vcpu           int
	Memory         int
	Disk           int
	IpAddress      string
	PmId           int
	EnvId          int
	MachineUsage   string
	RecomandStatus string
	ExpiredDate    *gtime.Time
}

type VmUpdateInput struct {
	Id             int         `json:"id"             description:""`
	OsType         string      `json:"osType" description:"操作系统"`
	Owner          string      `json:"owner"          description:"负责人"`
	Vcpu           int         `json:"vcpu"           description:"vcpu数"`
	Memory         int         `json:"memory"         description:"内存"`
	Disk           int         `json:"disk"           description:"磁盘g"`
	IpAddress      string      `json:"ipAddress"      description:"ip地址"`
	PmId           int         `json:"pmId"           description:"物理机id"`
	EnvId          int         `json:"envId"          description:"环境id"`
	MachineUsage   string      `json:"machineUsage"   description:"用途"`
	RecomandStatus string      `json:"recomandStatus" description:"期望状态"`
	ExpiredDate    *gtime.Time `json:"expiredDate" description:"过期日"`
}

type VmCreateOutput struct {
	Id int
}

type VmGetListOutput struct {
	List  []VmListItem `json:"list" description:"列表"`
	Page  int          `json:"page" description:"分页码"`
	Size  int          `json:"size" description:"分页数量"`
	Total int          `json:"total" description:"数据总数"`
}

type VmGetListInput struct {
	Name           string `json:"name"           description:"名称"`
	OsType         string `json:"osType" description:"操作系统"`
	Owner          string `json:"owner"          description:"负责人"`
	IpAddress      string `json:"ipAddress"      description:"ip地址"`
	PmId           int    `json:"pmId"           description:"物理机id"`
	EnvId          int    `json:"envId"          description:"环境id"`
	RecomandStatus string `json:"recomandStatus" description:"期望状态"`
	Page           int
	Size           int
}

//type VmGetListOutputItem struct {
//	Vm  *VmListItem    `json:"vm"`
//	Pm  *VmListPmItem  `json:"pm"`
//	Env *VmListEnvItem `json:"env"`
//}

type VmListItem struct {
	Id             int         `json:"id"             description:""`
	Name           string      `json:"name"           description:"名称"`
	OsType         string      `json:"osType" description:"操作系统"`
	Owner          string      `json:"owner"          description:"负责人"`
	Vcpu           int         `json:"vcpu"           description:"vcpu数"`
	Memory         int         `json:"memory"         description:"内存"`
	Disk           int         `json:"disk"           description:"磁盘g"`
	IpAddress      string      `json:"ipAddress"      description:"ip地址"`
	PmId           int         `json:"pmId"           description:"物理机id"`
	PmName         string      `json:"pmName"           description:"物理机名称"`
	EnvId          int         `json:"envId"          description:"环境id"`
	EnvName        string      `json:"envName"           description:"环境名称"`
	MachineUsage   string      `json:"machineUsage"   description:"用途"`
	RecomandStatus string      `json:"recomandStatus" description:"期望状态"`
	ExpiredDate    *gtime.Time `json:"expiredDate" description:"过期日"`
}

type VmListPmItem struct {
	Id   int    `json:"id"             description:""`
	Name string `json:"name"           description:"名称"`
}

type VmListEnvItem struct {
	Id   int    `json:"id"   description:""`
	Name string `json:"name" description:"环境名称"`
}
